Most data storage apparatuses and communication apparatuses incorporate an error correcting function of detecting data errors and correcting these errors. The error correcting function is implemented by the encoding/decoding system using Hamming codes (shortened Hamming codes) in which one bit of data can be corrected.
The encoding/decoding system performs an encoding process, in which a data bit string (data vector) and a generator matrix is used to generate Hamming codes. Further, the encoding/decoding system performs a decoding process, in which Hamming codes and a check matrix or a parity check matrix, either associated with the generator matrix, are utilized to detect error positions.
The data bit string corresponds to the input data stored in a recording medium (i.e., disk or memory provided in a data storage apparatus). The data bit string corresponds to the transmission data in a communication apparatus. The Hamming code is constituted by a data bit string and a parity bit string (parity data).
In the decoding process, the error positions (error addresses) are detected in the output data (i.e., received data in a communication apparatus) constituted by Hamming codes, and error data called “syndrome,” which represents the error positions, is generated. An error correcting process is performed, correcting the error bits at the error positions detected in the decoding process. Data that is free of error bits can therefore be output.
In the encoding/decoding system using Hamming codes, the check matrix (or generator matrix) is a matrix having a specific regularity. In the check matrix (or generator matrix), the input data may be a bit pattern having regularity or a pattern in which a certain bit string is repeated. In this case, the parity data or syndrome generated may become all zero. Therefore, the encoding/decoding system can not perform a detecting and correcting errors process.